WebAssembly

WebAssembly tai WASM on verkkoselainten tukema binäärinen käskykanta pinokone-tyyppiselle virtuaalikoneelle. WebAssemblyn tavoitteena on mahdollistaa raskaiden ohjelmistojen käytön verkkosivuilla. Vaikka WebAssemblyn pääkäyttökohde onkin verkkosovellukset, niin sen käyttö ei ole pelkästään rajoitettu niihin. WebAssembly ei tee oletuksia alustansa suhteen eikä se tarjoa vain verkkokohtaisia ominaisuuksia. Useille eri ohjelmointikielillä kirjoitetut ohjelmat voidaan kääntää WebAssemblyksi, jolloin niitä voi liittää verkkosivuille.[1].

WebAssembly pyrkii lähes natiivitason suorituskykyyn selaimessa käyttäen hyödyksi kaikkea saatavilla olevaa laitteistoa. WebAssemblyllä on binäärinen tiedostomuoto, joka on pieni ja johtuen siitä nopea siirtää verrattuna esimerkiksi JavaScriptin teksipohjaiseen esitysmuotoon. Suorituskyvystä ja koosta huolimatta WebAssemblyn tarkoituksena ei ole kokonaan korvata JavaScriptiä vaan se toimii sen ohella mahdollistaen sovelluksia, jotka aikaisemmin eivät olisi olleet mahdollista suorituskyvyn puolesta [2].

WebAssemblyn käyttöä verkkosivuilla on hidastanut se, että se ei voi nykyisessä muodossaan muuttaa verkkosivun DOM-puuta, eikä siten voi muuttaa verkkosivua tai lisätä sille interaktiivisuutta. Se voi kuitenkin kutsua JavaScript-funktiota ja välittää sille parametreja. Toiminnallisuuden toteuttamiseksi on kehitetty JavaScript-kirjastoja. Esimerkiksi Emscripten mahdollistaa kirjastojen SDL, OpenGL, OpenAL ja osan POSIXista käytön, jossa tulostuksen kohteena on verkkosivu.[3]

Mozillan kehittämä WASI (WebAssembly System Interface) on yksinkertainen rajapinta, joka sallii WebAssemblysta mm. tiedostojen käsittelyn. Tämän avulla WebAssemblya voi ajaa ilman selainta, eri käyttöjärjestelmille ja suorittimille siirrettävänä ohjelmana.[4]

  1. WebAssembly webassembly.org. Viitattu 23.10.2022.
  2. Introduction — WebAssembly 2.0 (Draft 2022-10-11) webassembly.github.io. Viitattu 23.10.2022.
  3. https://developer.mozilla.org/en-US/docs/WebAssembly/Concepts
  4. https://hacks.mozilla.org/2019/03/standardizing-wasi-a-webassembly-system-interface/

© MMXXIII Rich X Search. We shall prevail. All rights reserved. Rich X Search